Package de.yaams.extensions.rgssproject.map.nevent.command

Source Code of de.yaams.extensions.rgssproject.map.nevent.command.ChoiceCommand

/**
*
*/
package de.yaams.extensions.rgssproject.map.nevent.command;

import java.util.Arrays;

import org.jruby.RubyArray;
import org.jruby.RubyObject;
import org.jruby.RubyString;

import de.yaams.extensions.rgssproject.RGSSProjectHelper;
import de.yaams.extensions.rgssproject.database.form.RubyForm;
import de.yaams.extensions.rgssproject.map.nevent.YEventCommandList;
import de.yaams.extensions.rgssproject.map.nevent.core.EventCode;
import de.yaams.extensions.rgssproject.map.nevent.core.MultipleEventCommand;
import de.yaams.maker.helper.JavaHelper;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.language.I18N;

/**
* @author abby
*
*/
public class ChoiceCommand extends MultipleEventCommand {

  /**
   * @param startID
   * @param endID
   * @param middle
   */
  public ChoiceCommand() {
    super(102, 404, 402, 403);
    beta = true;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.rgssproject.map.nevent.core.MultipleEventCommand#
   * getInternEventTitle
   * (de.yaams.extensions.rgssproject.map.nevent.core.EventCode)
   */
  @Override
  protected String getInternEventTitle(EventCode e) {
    if (e.getId() == startID) {
      // check parameter
      RubyArray ra = (RubyArray) e.getParameters().get(0);

      // build it
      return I18N.t("Auswahl: {0}", Arrays.toString(ra.toArray()));
    }

    // bestimmte auswahl?
    if (e.getId() == middleIDs.get(0)) {
      return I18N.t("Auswahl: {0}", e.getParameters().get(1));
    }

    // bestimmte auswahl?
    if (e.getId() == middleIDs.get(1)) {
      return I18N.t("Auswahl: Abbruch");
    }

    return "?";
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#
   * getStartParameter()
   */
  @Override
  protected void createNewM(YEventCommandList yecl, int indent) {

    // end
    addEventCode(yecl, endID, indent, "");
    // new
    addEventCodeNew(yecl, indent);
    // second
    addEventCode(yecl, middleIDs.get(0), indent, "1,\"No\"");
    // new
    addEventCodeNew(yecl, indent);

    // first
    addEventCode(yecl, middleIDs.get(0), indent, "0,\"Yes\"");
    // if
    addEventCode(yecl, startID, indent, "[\"Yes\",\"No\",\"\",\"\"],0");
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getIcon()
   */
  @Override
  public String getIcon() {
    return "cards";
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getIcon(
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCode)
   */
  @Override
  public Object getIcon(EventCode e) {
    // what kind?
    if (e.getId() == endID) {
      return "card_ok";
    }
    if (e.getId() == startID) {
      return getIcon();
    }
    return "card";
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getName()
   */
  @Override
  public String getName() {
    return I18N.t("Message Choice");
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#getGroup()
   */
  @Override
  public String getGroup() {
    return "Basics";
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCommand#buildPanel
   * (de.yaams.maker.helper.gui.form.core.FormBuilder,
   * de.yaams.extensions.rgssproject.map.nevent.core.EventCode)
   */
  @Override
  public void buildPanel(FormBuilder f, final EventCode eA) {
    // select it
    EventCode e = null;
    try {
      e = getStartTag(eA);
    } catch (Exception e1) {
      return;
    }

    // add type
    f.addElement(
        "basic.esc",
        RubyForm.getComboBoxNum(I18N.t("Auswahl bei Abbruch"), JavaHelper.numAry(5),
            new String[] { "Verboten", "Antwort 1", "Antwort 2", "Antwort 3", "Antwort 4", "Eigene Behandlung" }, e.getParameters(), 1)
            .addChangeListener(new FormElementChangeListener() {

              @Override
              public void stateChanged(FormElement form) {
                if (form.getContentAsString().equals("5")) {
                  // add cancel
                  addTag(eA, new EventCode(ChoiceCommand.this, (RubyObject) RGSSProjectHelper.getInterpreter(eA.getYecl().getProject())
                      .runScriptlet("return RPG::EventCommand.new(403," + eA.getIndent() + ",[5])"), eA.getYecl()), endID, 0);
                } else {
                  removeTag(eA, 403, 0);
                }

              }
            }));

    // check parameter
    RubyArray ra = (RubyArray) e.getParameters().get(0);
    if (ra.size() < 4) {
      for (int i = ra.size() + 1; i <= 4; i++) {
        ra.add(RubyString.newEmptyString(RGSSProjectHelper.getInterpreter(e.getYecl().getProject()).getRuntime()));
      }
    }

    // add textbodes
    f.addHeader("text", new FormHeader(I18N.t("Antworten"), "card").setColumn(4));

    for (int i = 0; i < 4; i++) {
      f.addElement("text." + i, RubyForm.getStringFromAry(I18N.t("Antwort {0}", i + 1), ra, i));
    }
  }
}
TOP

Related Classes of de.yaams.extensions.rgssproject.map.nevent.command.ChoiceCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.